package com.tac.controller.mes;

import com.github.pagehelper.PageInfo;
import com.tac.common.result.Result;
import com.tac.pojo.mes.PlannedProduction;
import com.tac.pojo.mes.PlannedProductionMaterial;
import com.tac.service.mes.PlannedProductionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.util.Date;
import java.util.List;

@RequestMapping("/plannedProduction")
@RestController
@CrossOrigin
@Api(tags = "制造执行MES--计划排产")
public class PlannedProductionController {
/*
计划排产是指根据企业的生产计划和生产资源的情况，对生产任务进行合理的安排和调度，以实现生产计划的达成。

计划排产属于MES系统（Manufacturing Execution System，制造执行系统）的功能范畴。MES系统是一种针对生产制造过程管理的系统，它可以协调企业内部的各种生产资源和生产活动，实现生产计划的精细化管理。

在MES系统中，计划排产是一个非常重要的功能模块。通过计划排产功能，企业可以根据实际生产情况，灵活调整生产计划，并实现资源的最大化利用和生产效率的最大化提升，从而提高企业的生产效益和竞争力。
 */
    @Autowired
    private PlannedProductionService plannedProductionService;

    //计划排产查询
    @GetMapping("/getList")
    @ApiOperation("计划排产查询")
    public Result<PageInfo<PlannedProduction>> getList(
            Integer pageNum, Integer pageSize, String  serialNumber, String planNumber, Integer materialId,
            Integer bomId, Integer lineId, Integer technologyId, Integer projectMaintenanceId, @DateTimeFormat(pattern = "yyyy-MM-dd") Date produceDateStart,
            @DateTimeFormat(pattern = "yyyy-MM-dd")Date produceDateEnd, @DateTimeFormat(pattern = "yyyy-MM-dd")Date deliveryDateStart, @DateTimeFormat(pattern = "yyyy-MM-dd")Date deliveryDateEnd, String status){
        return plannedProductionService.getList(pageNum,pageSize,serialNumber,planNumber,materialId,bomId,lineId,technologyId,projectMaintenanceId,produceDateStart,produceDateEnd,deliveryDateStart,deliveryDateEnd,status);
    }
    //计划排产添加
    @PostMapping("/save")
    @ApiOperation("计划排产添加")
    public Result save(@RequestBody PlannedProduction plannedProduction){
        return plannedProductionService.save(plannedProduction);
    }
    //计划排产删除
    @DeleteMapping("/remove")
    @ApiOperation("计划排产删除")
    public Result remove(@RequestBody List<Integer> ids){
        return plannedProductionService.remove(ids);
    }
    //计划排产更新
    @PutMapping("/update")
    @ApiOperation("计划排产更新")
    public Result update(@RequestBody PlannedProduction plannedProduction){
        return plannedProductionService.update(plannedProduction);
    }


    //计划排产物料添加
    @ApiOperation("计划排产物料添加")
    @PostMapping("/save2")
    public Result save2(@RequestBody PlannedProductionMaterial plannedProductionMaterial){
        return plannedProductionService.save2(plannedProductionMaterial);
    }
    //计划排产物料删除
    @ApiOperation("计划排产物料删除")
    @DeleteMapping("/remove2")
    public Result remove2(@RequestBody List<Integer> ids){
        return plannedProductionService.remove2(ids);
    }
    //计划排产物料更新
    @ApiOperation("计划排产物料更新")
    @PutMapping("/update2")
    public Result update2(@RequestBody PlannedProductionMaterial plannedProductionMaterial){
        return plannedProductionService.update2(plannedProductionMaterial);
    }
}
